package com.wyh.controller.gfive;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.wyh.common.result.Result;
import com.wyh.domain.po.gfive.Template;
import com.wyh.service.gfive.TemplateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/template")
@Slf4j
@Api(tags = "系统管理-通知模板")
public class TemplateController {

    @Autowired
    private TemplateService temp;

    /**
     * 分页返回全部模板信息
     */
    @GetMapping("/Information")
    @ApiOperation("分页查询全部模板信息")
    public Result TemInformations(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize) {
        log.info("TemInformation 执行");
        return temp.selectlPageAll(pageNum, pageSize);
    }

    //查询需要的模板信息 并返回
    @GetMapping("/inquire")
    @ApiOperation("查询需要的模板信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "nodes", value = "业务节点", required = true),
            @ApiImplicitParam(name = "method", value = "通知方式", required = true)
    })
    public Result InquireTemplate(@RequestParam("nodes") String nodes, @RequestParam("method") String method) {
        if (nodes != null && method != null && nodes.length() > 0 && method.length() > 0) {

            QueryWrapper<Template> wrapper = new QueryWrapper<>();
            wrapper.eq("nodes", nodes).and(templat -> templat.eq("method", method));
            Template one = temp.getOne(wrapper);
            if (one != null) {
                return Result.success(one);
            }
        }

        return Result.error("请选择正确的选项");
    }

    /**
     * 添加模板信息
     */
    @PostMapping("/add")
    @ApiOperation("添加模板信息")
    public Result AddTemplate(@RequestBody Template templates) {
        if (templates == null) {
            return Result.error("请填写相关数据在提交");
        }
        if (templates.getTemplate() == null && templates.getName() == null && templates.getNodes() == null && templates.getMethod() == null) {
            return Result.error("请将相关数据填写完整");
        }
        if (templates.getTemplate().isEmpty() && templates.getName().isEmpty() && templates.getNodes().isEmpty() && templates.getMethod().isEmpty()) {
            return Result.error("请将相关数据填写完整");
        }

        boolean save = temp.save(templates);
        if (save != false) {
            return Result.success("添加成功");
        }
        return Result.error("添加失败");
    }

    /**
     * 删除
     */
    @GetMapping("/delte")
    @ApiOperation("删除模板信息")
    public Result DelteTemplate(@RequestParam("id") Integer id) {
        return temp.deleById(id);
    }

    /**
     * 修改模板信息
     */
    @GetMapping("/revise")
    @ApiOperation("修改模板信息")
    public Result ReviseTemplate(@RequestParam("id") Integer id, @RequestParam("template") String templates) {
        if (id == null && templates != null && templates.isEmpty()) {
            return Result.error("请输入相关数据");
        }
        UpdateWrapper<Template> query = new UpdateWrapper<>();
        query.eq("id",id).set("template",templates);
        boolean update = temp.update(query);
        if(update){
            return Result.success("修改成功");
        }
        return Result.error("修改失败");
    }


}
